The increasing demand for data communications has fostered the development of techniques that provide more cost-effective and efficient means of using communication networks to handle more information and new types of information. One such technique is to segment the information, which may be a voice or data communication, into packets. A packet is typically a group of binary digits, including at least data and control information. Integrated packet networks (typically fast packet networks) are generally used to carry at least two (2) classes of traffic, which may include, for example, continuous bit-rate (“CBR”), speech (“Packet Voice”), data (“Framed Data”), image, and so forth. Packet networks source, sink and/or forward protocol packets.
Congestion and Quality of Service (“QoS”) problems inside these networks have not been solved satisfactorily and remain as outstanding issues to be resolved. Although, message scheduling helps alleviate these problems, the efficient scheduling of work with thousands of entities (instances) is not a simple matter. At present, most message scheduling is based on the simplest technique for queuing packets for transmission on an internodal trunk of a fast-packet network: a first-in-first-out (“FIFO”) queue. However, FIFO queuing techniques do not address QoS parameters. This technique can also allow overload periods for digitized speech packets and for Framed Data packets, which results in a greater share of bandwidth being provided to one at the expense of the other; an undesirable result.
Another technique, head-of-line-priority (“HOLP”), may give data priority over speech, but does not solve the problem of data and speech queues affecting the QoS of each other and of CBR data fast packets under high traffic conditions. In HOLP, where speech fast packets are given a high priority, speech fast packets may affect the QoS of lower priority queues. Likewise, queuing schemes designed only for data do not solve the problems of integrating other traffic types, such as speech and CBR data.
Most current techniques for scheduling messages depend upon the storage of messages either in FIFO order or priority order. Current messaging queues are not flexible because they do not take into account any current or historical operating conditions. In addition, current functionality is often dependent on a single central processing unit (“CPU”) and memory.
Accordingly, there is a need for a method and apparatus for scheduling messages based, in part, on current and historical operating conditions. There is also a need for a method and apparatus that reduces congestion while maintaining QoS for all message types.